#include "freertos_start.h"

TaskHandle_t startHandler;
extern QueueHandle_t configMsgQueue;


 

void start_task(void* param){
    //进入代码临界区   --只要没有退出代码临界区  其他的任务是不能打断当前的执行的代码逻辑
    taskENTER_CRITICAL();

    configMsgQueue = xQueueCreate(5,sizeof(char*));

    //初始化心跳任务
    init_heart_task();
    //初始化采集任务
    init_gather_task();
    //初始化执行任务
    init_execute_task();
    //初始化蓝牙任务
    init_bluetooth_task();


    //创建心跳任务
    create_heart_task();
    //创建采集任务
    create_gather_task();
    //创建执行任务
    create_execute_task();
    //创建蓝牙任务
    create_bluetooth_task();


    //删除自己
    vTaskDelete(NULL);
    //退出代码临界区
    taskEXIT_CRITICAL();
}

void freertosStart(){
    //创建一个任务  这个任务的目的就是去创建其他的任务
    //创建任务
    BaseType_t res= xTaskCreate(start_task,
                "start_task",
                128,
                NULL,
                2,
                &startHandler);

    if(res==pdPASS){
        printf("start_task create success! \r\n");
    }else{
        printf("start_task create error! \r\n");
    }
    
    //开启任务调度器
    vTaskStartScheduler();

}
